﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Conexion;
using System.Data;
using AccesoDatos.Objetos;

namespace AccesoDatos.Manejador
{
    public class Manejador_Tramites
    {
        public bool GuardaTramites(clsParametrosTramites objParametros)
        {
            bool Agrega = false;
            List<clsParametros> lstParametros = new List<clsParametros>();
            try
            {
                clsConexion objConn = new clsConexion();
                lstParametros = new List<clsParametros>();
                lstParametros.Add(new clsParametros("@Folio", objParametros.Folio));
                lstParametros.Add(new clsParametros("@Fecha", objParametros.Fecha.ToString("yyyy/MM/dd")));
                lstParametros.Add(new clsParametros("@id_estatus", objParametros.Id_estatus.ToString()));
                lstParametros.Add(new clsParametros("@Accion", objParametros.Accion));
                lstParametros.Add(new clsParametros("@id_usuario", objParametros.Id_usuario.ToString()));
                lstParametros.Add(new clsParametros("@detalle", objParametros.Detalle));
                lstParametros.Add(new clsParametros("@referencia", objParametros.Referencia));
                lstParametros.Add(new clsParametros("@oculto", objParametros.Oculto.ToString()));
                lstParametros.Add(new clsParametros("@Cod_Proveedor", objParametros.Cod_Proveedor.ToString()));
                lstParametros.Add(new clsParametros("@rma_proveedor", objParametros.Rma_Proveedor));
                lstParametros.Add(new clsParametros("@guia_envio", objParametros.Guia_Envio));
                lstParametros.Add(new clsParametros("@paqueteria", objParametros.Paqueteria));
                lstParametros.Add(new clsParametros("@fecha_envio", objParametros.Fecha_Envio.ToString("yyyy/MM/dd")));
                lstParametros.Add(new clsParametros("@comentarios", objParametros.Comentarios));
                lstParametros.Add(new clsParametros("@Orden_Servicio", objParametros.Orden_Servicio));
                Agrega = objConn.Procedure_standart("sp_RMA_AplicaCambiosTramite", lstParametros);

                return Agrega;
                

            }
            catch (Exception ex)
            {
                return Agrega;
            }
        }

        public DataTable RegresaProveedores(string strCodProv)
        {
            DataTable dtTramites = new DataTable();
            clsConexion objConn = new clsConexion();
            List<clsParametros> lstParametros = new List<clsParametros>();

            try
            {
                lstParametros = new List<clsParametros>();
                lstParametros.Add(new clsParametros("@CodProv", strCodProv));
                dtTramites = objConn.Datatable_standart("sp_RMA_CargaInfoTramites", lstParametros);
                return dtTramites;
            }
            catch (Exception ex)
            {
                return dtTramites;
            }

        }
        public string ConsultaDetalleTramites(List<string> lstFolId)
        {
            string strQuery = "";
            string strFolios = "";
            int cont = 0;
            strQuery += "select P.Folio,D.producto, D.descripcion_producto, D.costo, D.serie, P.factura, P.fecha_alta, F.CliId, P.entrada_rma ";
            strQuery += "FROM dbo.RMA_principal AS P INNER JOIN ";
            strQuery += "dbo.RMA_detalle AS D ON P.Folio = D.id_folio INNER JOIN ";
            strQuery += "dbo.RMA_informacion_compra AS C ON P.Folio = C.id_folio INNER JOIN ";
            strQuery += "MacroPro.dbo.facturas AS F ON P.factura = F.FolId ";
            strQuery += "WHERE P.Folio in (";
            lstFolId.ForEach(delegate(string strF)
            {
                cont++;
                strFolios += "'" + strF +"',";
                

            });
            strFolios = strFolios.Remove(strFolios.Length - 1);
            strQuery += strFolios;
            strQuery += ")";
            

            return strQuery;
        }
        public DataTable EjecutaQueryTramites(string strQuery)
        {
            DataTable dtTramites = new DataTable();
            clsConexion objConn = new clsConexion();
            List<clsParametros> lstParametros = new List<clsParametros>();

            try
            {
                lstParametros = new List<clsParametros>();
                lstParametros.Add(new clsParametros("@SQL", strQuery));
                dtTramites = objConn.Datatable_standart("sp_RMA_EjecutaQuery", lstParametros);
                return dtTramites;
            }
            catch (Exception ex)
            {
                return dtTramites;
            }

        }
        public DataTable RegresaCatalogoStatus()
        {
            try
            {
                clsConexion objConn = new clsConexion();
                DataTable Datos = objConn.Datatable_standart("sp_RMA_RegresaCatStatus");

                return Datos;
            }
            catch (Exception ex)
            {
                DataTable Datos = new DataTable();
                return Datos;
            }
        }
        public DataTable RegresaCatPaqueterias()
        {
            try
            {
                clsConexion objConn = new clsConexion();
                DataTable Datos = objConn.Datatable_standart("sp_RMA_CargaPaqueterias");

                return Datos;
            }
            catch (Exception ex)
            {
                DataTable Datos = new DataTable();
                return Datos;
            }
        }
       


        

        
    }
}
